﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace proyectoENS
{
    class DALNotas
    {
        private static proyectoENSEntities db = new proyectoENSEntities();
        //cada String[] de la lista contiene  {idAlumno, idMateria, nota}
        
        public static void setNotas(List<string[]> lista, int trimestre)
        {
            foreach (string[] item in lista)
	        {
		        Calificaciones c = new Calificaciones();
                if (!(string.IsNullOrEmpty(item[0])))
                    c.idAlumno = int.Parse(item[0]);
                if (!(string.IsNullOrEmpty(item[1])))
                    c.idMateria = int.Parse(item[1]);
                if (!(string.IsNullOrEmpty(item[2])))
                    c.calificacion = decimal.Parse(item[2]);
                c.cicloLectivo = DateTime.Now.Year;
                c.trimestre = byte.Parse(trimestre.ToString());
                db.Calificaciones.AddObject(c);
            }
            db.SaveChanges();
            
        }
        public static Calificaciones getCalificacion(int idAlumno, int idMateria, int trimestre)
        {
            var tmp = (from c in db.Calificaciones
                       where c.idAlumno == idAlumno &&
                       c.idMateria == idMateria &&
                       c.trimestre == trimestre
                       select c).FirstOrDefault<Calificaciones>();
            return tmp;
        }
        public static double? getPromedioByIdAlumnoMateria(int idAlumno, int idMateria)
        {
            List<Calificaciones> tmp = (from c in db.Calificaciones
                       where c.idAlumno == idAlumno &&
                       c.idMateria == idMateria
                       select c).ToList<Calificaciones>();
            if (tmp.Count > 0)
                return tmp.Average(c => (double)c.calificacion);
            else
                return null;
        }
        public static double getPromedioFinalByIdAlumnoMateria(int idAlumno, int idMateria)
        {
            List<Calificaciones> tmp = (from c in db.Calificaciones
                                        where c.idAlumno == idAlumno &&
                                        c.idMateria == idMateria
                                        select c).ToList<Calificaciones>();
            if (tmp.Count >= 4)
                return Math.Round((tmp.Average(c => (double)c.calificacion)), 2);
            else
                return -1;
        }
    }
}
